local M={}
local 一键购买杂货版本号=require("configs.Config").初始化设置_版本号["一键购买杂货版本号"]
local log_通用 = require("通用方法集合.二次封装方法.Log").Log_通用
local 区域滑动查找器 = require("通用方法集合.区域滑动查找文字并点击.区域滑动查找文字")
local 查找固定区域文字并点击 = require("通用方法集合.二次封装方法.Tools").查找固定区域文字并点击
local 初始化配置一键购买杂货=require("configs.Config").初始化设置["初始化设置_一键购买杂货设置"]
local 一键购买杂货数量=require("configs.Config").一键购买杂货数量
local 点击地图延时=800
local 杂货列表={
    ["魔石"]=一键购买杂货数量["魔石"],
    ["据点传送卷轴"]=一键购买杂货数量["据点传送卷轴"],
    ["瞬间移动卷轴"]=一键购买杂货数量["瞬间移动卷轴"],
    ["突击灵药"]=一键购买杂货数量["突击灵药"],
    ["必胜灵药"]=一键购买杂货数量["必胜灵药"],
}
local 生命力药水购买数量=一键购买杂货数量["生命力药水"]


local function 保存配置()
    _ENV["文件_保存记录"](初始化配置一键购买杂货, {
        ["初始化配置一键购买杂货"] = true,
        ["一键购买杂货版本号"] = 一键购买杂货版本号
    })
    log_通用("一键购买杂货配置保存成功")
end    

local function 读取配置()
    local 配置 = _ENV["文件_读取记录"](初始化配置一键购买杂货)
    if 配置 and 配置["记录内容"] and 配置["记录内容"]["初始化配置一键购买杂货"] 
            and 配置["记录内容"]["一键购买杂货版本号"] == 一键购买杂货版本号 then
        log_通用("一键购买杂货配置存在，不需要再设置一键购买杂货")
        return true
    else
        log_通用("一键购买杂货配置不存在，需要再设置一键购买杂货")
        return false
    end
end

local function 数字输入(数量)
    local 数字按钮位置 = {
        ["1"] = {x = 784, y = 540},  -- 左下 (784 + 0*116, 543 + 67)
        ["2"] = {x = 900, y = 540},  -- 中下 (784 + 1*116, 543 + 0*67)
        ["3"] = {x = 1016, y = 540}, -- 右下 (784 + 2*116, 543 + 67)
        ["4"] = {x = 784, y = 476},  -- 左中 (784 + 0*116, 543 - 67)
        ["5"] = {x = 900, y = 476},  -- 中心 (784 + 1*116, 543 - 67)
        ["6"] = {x = 1016, y = 476}, -- 右中 (784 + 2*116, 543 - 67)
        ["7"] = {x = 784, y = 409},  -- 左上 (784 + 0*116, 543 - 2*67)
        ["8"] = {x = 900, y = 409},  -- 中上 (784 + 1*116, 543 - 2*67)
        ["9"] = {x = 1016, y = 409}, -- 右上 (784 + 2*116, 543 - 2*67)
        ["0"] = {x = 784, y = 610}   -- 最下 (784 + 0*116, 543 + 2*67)
    }
    
    -- 清除按钮位置 (C按钮) - 在数字0右侧
    local 清除按钮X = 1133  -- 784 + 1*116
    local 清除按钮Y = 610  -- 与数字0同水平线
    
    local 确定按钮X = 1096  -- 784 + 2*116
    local 确定按钮Y = 750   -- 与数字2同水平线
    
    _ENV["鼠标_随机点击"](清除按钮X, 清除按钮Y, 50, 30)
    _ENV["延迟"](200)
    
    -- 将数量转换为字符串，逐位输入
    local 数量字符串 = tostring(数量)

    -- 逐位输入数字
    for i = 1, #数量字符串 do
        local 数字 = string.sub(数量字符串, i, i)
        if 数字按钮位置[数字] then
            local 按钮X = 数字按钮位置[数字].x
            local 按钮Y = 数字按钮位置[数字].y
            _ENV["鼠标_随机点击"](按钮X, 按钮Y, 50, 30)
            _ENV["延迟"](300)
        end
    end

    _ENV["鼠标_随机点击"](确定按钮X, 确定按钮Y, 50, 30)
    _ENV["延迟"](800)
    return true
end 

local function 获取生命力药水名称()
    if 等级 < 45 then
        return "生命力药水"
    elseif 等级 < 60 then
        return "高级生命力药水"
    elseif 等级 < 65 then
        return "高阶生命力药水"
    elseif 等级 < 70 then
        return "最高阶生命力药水"
    else 
        return "特级生命力药水"
    end
end

local function 一键设置(类型,数量)
    log_通用("一键设置"..类型..数量)
    if 区域滑动查找器.查找文字(149,137,476,938, 类型, 10, 点击地图延时, "杂货键盘选择") then
        数字输入(数量)
        return true
    else
        log_通用("没有找到"..类型)
        return false
    end
    
end

local function 一键初始化生命力药水()
    local 当前生命力药水=获取生命力药水名称()
    if 当前生命力药水=="生命力药水" then--45级以下
        --一键设置("生命力药水",0)
    elseif 当前生命力药水=="高级生命力药水" then--45级以上60级以下
        一键设置("生命力药水",0)
        一键设置("高阶生命力药水",0)
    elseif 当前生命力药水=="高阶生命力药水" then--60级以上70级以下
        一键设置("生命力药水",0)
        一键设置("高级生命力药水",0)
    elseif 当前生命力药水=="最高阶生命力药水" then
        一键设置("生命力药水",0)
        一键设置("高级生命力药水",0)
        一键设置("高阶生命力药水",0)
    elseif 当前生命力药水=="特级生命力药水" then
        一键设置("生命力药水",0)
        一键设置("高级生命力药水",0)
        一键设置("高阶生命力药水",0)
        一键设置("最高阶生命力药水",0)
    end
    return true
end

local function 一键购买杂货设置()
    log_通用("一键购买杂货设置")
    for i = 1 , 10 do
        if 查找固定区域文字并点击({74,993,323,1049}, "一键购买设置", 点击地图延时,true) then
            log_通用("点击一键购买设置")
        elseif 查找固定区域文字并点击({89,16,255,74}, "杂货商人", 点击地图延时,false) 
            and 查找固定区域文字并点击({70,991,316,1046}, "取消", 点击地图延时,false) then
                log_通用("一键设置界面了")
                一键初始化生命力药水()
                一键设置(获取生命力药水名称(),生命力药水购买数量)
                一键设置("魔石",一键购买杂货数量["魔石"])
                一键设置("据点传送卷轴",一键购买杂货数量["据点传送卷轴"])
                一键设置("瞬间移动卷轴",一键购买杂货数量["瞬间移动卷轴"])
                一键设置("突击灵药",一键购买杂货数量["突击灵药"])
                一键设置("必胜灵药",一键购买杂货数量["必胜灵药"])
                --for 物品名称, 数量 in pairs(杂货列表) do
                --    一键设置(物品名称, 数量)
                --end
                if 查找固定区域文字并点击({399,994,562,1045}, "保存设置", 点击地图延时,true) then
                    返回()
                    return true
                end
        end
    end
    return false
end

local function 进入购买杂货界面 (是否直接一键购买)
	--showControlBar(false)
	for i = 1 , 20 do
		if _ENV["图色_多点找色Ex"](找色_杂货商人 , 0.9 , 0 , 0 , 0 , 1 , false ) or _ENV["文字寻找E"](找色_杂货商人 , 3 , "杂货商人" , false ) then
			log_通用("找到杂货商人。")
            if 是否直接一键购买 then
                if 查找固定区域文字并点击({361,993,601,1046}, "一键购买", 点击地图延时,true) then
                    if 查找固定区域文字并点击({1049,925,1133,972}, "购买", 点击地图延时,true) then
                        _ENV["鼠标_随机点击"](871, 676, 800, 1500)
                    end
                end
                回到主界面()
                return true
            else
                if 一键购买杂货设置() then
                    返回()
                    return true
                else
                    log_通用("一键购买杂货设置失败")
                    返回()
                    return false
                end
            end    
		elseif _ENV["图色_多点找色Ex"](找色_列表杂货 , 0.9 , 0 , 0 , 0 , 1 , true ) or _ENV["文字寻找E"](找色_列表杂货 , 3 , "杂货" , true ) then
			log_通用("列表杂货")
			for i = 1 , 30 do
				if _ENV["图色_多点找色Ex"](找色_杂货商人 , 0.9 , 0 , 0 , 0 , 1 , false ) then
					break
				end
				_ENV["调试输出"]("寻路等待" , true , 1000)
			end
		elseif _ENV["图色_多点找色Ex"](找色_列表杂货 , 0.9 , 0 , 0 , 0 , 1 , false ) == false and _ENV["图色_多点找色Ex"](找色_据点显示列表 , 0.9 , 0 , 0 , 0 , 1 , true ) then
			log_通用("点击据点显示列表")
		elseif _ENV["图色_多点找色Ex"](找色_列表仓库 , 0.9 , 0 , 0 , 0 , 1 , false ) or _ENV["图色_多点找色Ex"](找色_列表公会 , 0.9 , 0 , 0 , 0 , 1 , false )or _ENV["图色_多点找色Ex"](找色_列表委托所 , 0.9 , 0 , 0 , 0 , 1 , false )then
			log_通用("找到列表仓库或列表公会或列表委托所")
			_ENV["鼠标_模拟滑动"](208 , 244 , 224 , 510 , 400 , 600)
			
		else
			log_通用("回据点买杂货"..i)
			回到据点()
		end
		
	end
	showControlBar(true)
	return false  -- 循环结束表示购买失败
end


function M.检测并初始化一键购买杂货设置()
    if 读取配置() then
        return true
    elseif 进入购买杂货界面(false) then
        保存配置()
        return true
    end
    return false
end

function M.一键购买杂货()
    if M.检测并初始化一键购买杂货设置() then
        return 进入购买杂货界面(true)
    end
    
end

function M.Test()
    --一键设置("生命力药水",221)
    --购买杂货("红药",18)
    --回到据点()
    --进入购买杂货界面(true)
    --M.检测并初始化一键购买杂货设置()
end

return M